package dto

import (
	"time"
	"tuowei.com/app/admin/models"
	"tuowei.com/common/dto"
	common "tuowei.com/common/models"
)

type SysFinanceTxmxGetPageReq struct {
	dto.PaginationNew `search:"-"`
	Name              string `json:"name" search:"type:contains;column:name;table:sys_finance_txmx" comment:"用户姓名"`      // 用户姓名
	Account           string `json:"account" search:"type:contains;column:account;table:sys_finance_txmx" comment:"账号"`  // 账号
	TxTime            string `json:"tx_time"search:"type:contains;column:tx_time;table:sys_finance_txmx" comment:"提现时间"` // 提现时间
}

func (m *SysFinanceTxmxGetPageReq) GetNeedSearch() interface{} {
	return *m
}

type SysFinanceTxmxGetPageByAccountReq struct {
	dto.PaginationNew `search:"-"`
	FinanceTxmxId     int `json:"finance_txmx_id" search:"type:exact;column:finance_txmx_id;table:sys_finance_txmx" comment:"提现明细ID"` // 账号

}

func (m *SysFinanceTxmxGetPageByAccountReq) GetNeedSearch() interface{} {
	return *m
}

type FinanceTxmxGetPage struct {
	dto.PaginationNew `search:"-"`
	Account           string `json:"account" search:"type:exact;column:account;table:sys_finance_txmx" comment:"账号"`       // 账号
	UserType          string `json:"user_type" search:"type:exact;column:user_type;table:sys_finance_txmx" comment:"用户类型"` // 用户类型
}

func (m *FinanceTxmxGetPage) GetNeedSearch() interface{} {
	return *m
}

type SysFinanceTxmxInsertReq struct {
	FinanceTxmxId  int       `json:"finance_txmx_id" comment:"提现明细ID"`        // 提现明细ID
	Name           string    `json:"name" comment:"用户姓名"`                     // 用户姓名
	Account        string    `json:"account" comment:"账号"`                    // 账号
	UserType       string    `json:"user_type" comment:"用户类型:网课教师，线上学生，线下学生"` // 用户类型
	AccountBalance float64   `json:"account_balance" comment:"账户余额"`          // 账户余额
	TxAmount       float64   `json:"tx_amount" comment:"提现金额"`                // 提现金额
	Province       string    `json:"province" comment:"大区，例如：重庆，四川等"`         // 大区
	TxTime         time.Time `json:"tx_time" comment:"提现时间"`                  // 提现时间
	TxStatus       string    `json:"tx_status" comment:"提现状态，提交提现，提现到账，完成"`   // 提现状态
	BankName       string    `json:"bank_name" comment:"银行名称"`                // 银行名称
	BankNum        string    `json:"bank_num" comment:"银行卡号"`                 // 银行卡号
	TxWay          int       `gorm:"type:int(10);not null;default:3;index;comment:1微信提现，2支付宝提现，3银行卡提现" json:"tx_way"`
	common.ControlBy
}

func (s *SysFinanceTxmxInsertReq) Generate(model *models.SysFinanceTxmx) {
	//model.CourseId = s.CourseId
	model.FinanceTxmxId = s.FinanceTxmxId
	model.Name = s.Name
	model.Account = s.Account
	model.UserType = s.UserType
	model.AccountBalance = s.AccountBalance
	model.TxAmount = s.TxAmount
	model.Province = s.Province
	model.TxTime = s.TxTime
	model.TxStatus = s.TxStatus
	model.BankName = s.BankName
	model.BankNum = s.BankNum

}

func (s *SysFinanceTxmxInsertReq) GetId() interface{} {
	return s.FinanceTxmxId
}

type SysFinanceTxmxUpdateReq struct {
	FinanceTxmxId  int       `json:"finance_txmx_id" comment:"提现明细ID"`        // 提现明细ID
	Name           string    `json:"name" comment:"用户姓名"`                     // 用户姓名
	Account        string    `json:"account" comment:"账号"`                    // 账号
	UserType       string    `json:"user_type" comment:"用户类型:网课教师，线上学生，线下学生"` // 用户类型
	AccountBalance float64   `json:"account_balance" comment:"账户余额"`          // 账户余额
	TxAmount       float64   `json:"tx_amount" comment:"提现金额"`                // 提现金额
	Province       string    `json:"province" comment:"大区，例如：重庆，四川等"`         // 大区
	TxTime         time.Time `json:"tx_time" comment:"提现时间"`                  // 提现时间
	TxStatus       string    `json:"tx_status" comment:"提现状态，提交提现，提现到账，完成"`   // 提现状态
	BankName       string    `json:"bank_name" comment:"银行名称"`                // 银行名称
	BankNum        string    `json:"bank_num" comment:"银行卡号"`                 // 银行卡号
	common.ControlBy
}

func (s *SysFinanceTxmxUpdateReq) Generate(model *models.SysFinanceTxmx) {
	if s.FinanceTxmxId != 0 {
		model.FinanceTxmxId = s.FinanceTxmxId
	}
	model.Name = s.Name
	model.Account = s.Account
	model.UserType = s.UserType
	model.AccountBalance = s.AccountBalance
	model.TxAmount = s.TxAmount
	model.Province = s.Province
	model.TxTime = s.TxTime
	model.TxStatus = s.TxStatus
	model.BankName = s.BankName
	model.BankNum = s.BankNum
	model.CreateBy = s.CreateBy
}

func (s *SysFinanceTxmxUpdateReq) GetId() interface{} {
	return s.FinanceTxmxId
}

type SysFinanceTxmxGetReq struct {
	Id int `uri:"id"`
}

func (s *SysFinanceTxmxGetReq) GetId() interface{} {
	return s.Id
}

type SysFinanceTxmxDeleteReq struct {
	Ids []int `json:"ids"`
}

func (s *SysFinanceTxmxDeleteReq) GetId() interface{} {
	return s.Ids
}
